#ifndef MQTT_PUBLISHER_H_
#define MQTT_PUBLISHER_H_

#include <mqtt/async_client.h>

#include <string>

/**
 * MQTT 5.0 发布者类
 * 负责连接到 broker 并发布温度数据到指定主题
 */
class MQTTPublisher {
 private:
  std::string broker_address_;  // MQTT broker 地址
  std::string client_id_;       // 客户端 ID
  mqtt::async_client client_;   // MQTT 客户端
  bool is_connected_;           // 连接状态

  mqtt::connect_options conn_opts_;  // 连接属性
  // 生成随机温度数据（私有辅助函数）
  float GenerateTemperature();

 public:
  // 构造函数
  MQTTPublisher(const std::string& broker, const std::string& client_id);

  // 析构函数：释放资源并断开连接
  ~MQTTPublisher();

  // 连接到 MQTT broker
  bool Connect();

  // 断开与 broker 的连接
  void DisConnect();

  // 发布温度数据到指定主题
  void PublishTemperature(const std::string& topic, int interval = 2,
                          int count = 0);

  // 获取当前连接状态
  bool IsConnected() const;
};

#endif  // MQTT_PUBLISHER_H